/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.losalpes.basket;

import com.losalpes.buy.IBuyService;
import com.losalpes.catalog.ICatalogService;
import com.losalpes.client.IClientService;
import com.losalpes.persistence.entity.Compra;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.context.FacesContext;


/**
 *
 * @author Henry.Quiroga
 */
public class BasketBean {

    @EJB
    IBasketService basketService;
    @EJB
    IBuyService buyService;
    @EJB
    IClientService clientService;
    @EJB
    ICatalogService catalogService;

    /**
     * constructor de la clase
     */
    public BasketBean() {
    }

    /**
     * Añade un elemento a la canasta
     * @return un string de navegacion
     */
    public String add() {
        String id = (String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id");
        basketService.add(Long.parseLong(id));
        return "verbasket";
    }

    /**
     * Elimina un elemento de la canasta
     * @return un string de naegacion
     */
    public String remove() {
        String id = (String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id");
        basketService.remove(Long.parseLong(id));
        return "verbasket";
    }

    /**
     * Obtiene todos los elementos de la lista
     * @return La lista de los elementos
     */
    public List getItems() {
        return basketService.getItems();
    }

    /**
     * Recalcula valores y devuelve el total
     * @return un entero
     */
    public int getTotal() {
        return basketService.getTotal();
    }

    /**
     * obtiene la compra
     * @return
     */
    public Compra getCompra() {
        return basketService.getCompra();
    }

    /**
     * Establece la compra
     * @param compra
     */
    public void setCompra(Compra compra) {
        basketService.setCompra(compra);
    }

    /**
     * Establece la forma de pago elegida por el usuario
     */
    public void establecerFormaPago() {
        String formaPago = (String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("formaPago");
        basketService.getCompra().setFormaPago(formaPago);
    }

    /**
     * Verifica si el usuario esta logeado para poder continuar
     * @return String de navegacion
     */
    public String confirmarOrden() {
        String username = (String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("usuario");
        return basketService.confirmarOrden(username);
    }

    public String loggetout() {
        basketService.getCompra().setCliente(null);
        return "cliente";
    }

    /**
     * Crea el objeto compra y envia al usuario para que confirme su orden
     * @return
     */
    public String buyProduct() {
        return basketService.buyProduct();
        
    }

    public String completarPago() {
        return basketService.completarPago();
    }
}